"""

根据别人的思路写的代码：
这个题蛮有意思的，可以直接从后遍历，遇到一个数就把所有子集加上该数组成新的子集，遍历完毕即是所有子集

效果并不理想
"""
from typing import List


class Solution:
    """我按这个思路写的代码
    """
    def subsets(self, nums: List[int]) -> List[List[int]]:
        ans = [[]]

        for i in nums:
            for j in ans[:]:
                tmp = j.copy()
                tmp.append(i)
                ans.append(tmp)

        return ans


class Solution:
    """大神写的代码
    """
    def subsets(self, nums):
        res = [[]]
        for i in nums:
            res = res + [[i] + num for num in res] 
        return res
if __name__ == "__main__":
    res = Solution().subsets([1,2,3])
    print(res)
